home *** CD-ROM | disk | FTP | other *** search
/ US Department of Defense…ndamentals 1.0 2004 April / US Department of Defense: Firewall & Router Fundamentals 1.0 2004 April.iso / text_only / includes / lib / Iterator.js < prev    next >
Encoding:
Text File  |  2003-12-08  |  1.9 KB  |  107 lines

  1. var ITERATOR_INDEX = 0;
  2. var ITERATOR_OBJECT_LIST = 1;
  3.  
  4. /**
  5.   user methods to access the iterator
  6.   */
  7.  
  8. function iterator_has_next(iterator)
  9. {
  10.   if (iterator_assert(iterator, "iterator_has_next"))
  11.   {
  12.     if (iterator[ITERATOR_INDEX] == iterator[ITERATOR_OBJECT_LIST].length)
  13.       return false;
  14.     else
  15.       return true;
  16.   }
  17.   return false
  18. }
  19.  
  20. function iterator_next(iterator)
  21. {
  22.   if (iterator_assert(iterator, "iterator_next"))
  23.   {
  24.     var returnValue = iterator[ITERATOR_OBJECT_LIST][iterator[ITERATOR_INDEX]];
  25.     iterator[ITERATOR_INDEX]++;
  26.     return returnValue;
  27.   }
  28.   else
  29.   {
  30.     return null;
  31.   }
  32. }
  33.  
  34. function iterator_previous_index(iterator)
  35. {
  36.   if (iterator_assert(iterator, "iteratorCurrentIndex"))
  37.   {
  38.     return iterator[ITERATOR_INDEX]-1;
  39.   }
  40.   else
  41.   {
  42.     return null;
  43.   }
  44. }
  45.  
  46. function iterator_next_index(iterator)
  47. {
  48.   if (iterator_assert(iterator, "iteratorCurrentIndex"))
  49.   {
  50.     return iterator[ITERATOR_INDEX];
  51.   }
  52.   else
  53.   {
  54.     return null;
  55.   }
  56. }
  57.  
  58. /**
  59.   System methods to create and populate the iterator
  60.   */
  61.  
  62. function new_iterator()
  63. {
  64.   var iterator = new Array();
  65.   iterator[ITERATOR_INDEX] = 0;
  66.   iterator[ITERATOR_OBJECT_LIST] = new Array();
  67.  
  68.   return iterator; // no elements
  69. }
  70.  
  71. function iterator_add(iterator, value)
  72. {
  73.   iterator[ITERATOR_OBJECT_LIST][iterator[ITERATOR_OBJECT_LIST].length] = value;
  74. }
  75.  
  76. function iterator_add_array(iterator, arr)
  77. {
  78.   for (var x=0; x<arr.length; x++)
  79.   {
  80.     iterator_add(iterator, arr[x]);
  81.   }
  82. }
  83.  
  84. function iterator_assert(iterator, functionName)
  85. {
  86.   var bad = false;
  87.   if (iterator == null)
  88.   {
  89.     bad = true;
  90.   }
  91.   else
  92.   {
  93.     if (iterator.length != 2)
  94.       bad = true;
  95.   }
  96.   if (bad)
  97.   {
  98.     alert("You did not pass an Iterator to " + functionName);
  99.  
  100.     var tmp = null;
  101.     alert(tmp.length); // cause an error
  102.   }
  103.  
  104.   return !bad;
  105. }
  106.  
  107.